from pydantic import BaseModel
from typing import Optional
from datetime import datetime


class Job(BaseModel):
    job_id: str  # 任务ID
    expiration: int  # 单位毫秒
    handler_name: str  # 任务名字
    func_kwargs: dict  # 任务参数
    run_times: int = 0  # 已执行次数
    done: int = 0  # 是否已经完成调度
    retry_policy_name: str  # 重试策略名称
    update_time: Optional[datetime] = None  # 更新时间
    create_time: Optional[datetime] = None  # 创建时间


class JobRunTimesUpdateModel(BaseModel):
    expiration: int
    run_times: int


class JobDoneUpdateModel(JobRunTimesUpdateModel):
    done: int